home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / uhren & terminkalender / time / tolleuhr / tolleuhr_c / source / tulibinit.s < prev    next >
Text File  |  1996-04-07  |  3KB  |  158 lines

  1. ***************************************************************************
  2.  
  3. ; tolleuhr.library v37.1 - 15/11/95 by Gunther Nikl - first version
  4.  
  5. ***************************************************************************
  6.  
  7. ; include stuff
  8.  
  9.         include    exec/types.i
  10.         include    exec/resident.i
  11.         include    exec/libraries.i
  12.         include    exec/initializers.i
  13.         include    lvo30/exec_lib.i
  14.  
  15. ; import
  16.  
  17.         XREF    _TolleUhr
  18.  
  19. ; specific defines
  20.  
  21. UHRVER        equ    37
  22. UHRREV        equ    1
  23.  
  24. ; macro stuff
  25.  
  26. RECALL        MACRO
  27.         jsr    _LVO\1(a6)
  28.         ENDM
  29.  
  30. LIBVEC        macro
  31.         dc.w    \1-FuncTab
  32.         endm
  33.  
  34. ; class base
  35.  
  36.     STRUCTURE ClassBase,36
  37.  
  38.      ULONG    cb_SegList
  39.      ULONG    cb_SysBase
  40.  
  41.     LABEL cb_SIZEOF
  42.  
  43. ***************************************************************************
  44.  
  45. start        moveq    #-1,d0
  46.         rts
  47.  
  48. ***************************************************************************
  49.  
  50. RomTag        dc.w    RTC_MATCHWORD
  51.         dc.l    RomTag
  52.         dc.l    EndTag
  53.         dc.b    RTF_AUTOINIT
  54.         dc.b    UHRVER
  55.         dc.b    NT_LIBRARY
  56.         dc.b    0
  57.         dc.l    LibName
  58.         dc.l    IdString
  59.         dc.l    InitTab
  60. EndTag
  61.  
  62. ;--------------------------------------------------------------------------
  63.  
  64. LibName        dc.b    'tolleuhr.library',0
  65. IdString    dc.b    'tolleuhr 37.1 (15.11.95)'
  66.         dc.b    ' by M.Fleischer and G.Nikl',13,10,0
  67.  
  68. ;--------------------------------------------------------------------------
  69.  
  70.         cnop    0,4
  71.  
  72. InitTab        dc.l    cb_SIZEOF
  73.         dc.l    FuncTab
  74.         dc.l    ResInfo
  75.         dc.l    InitFunc
  76.  
  77. ;--------------------------------------------------------------------------
  78.  
  79. FuncTab        dc.w    -1
  80.         LIBVEC    LibOpen
  81.         LIBVEC    LibClose
  82.         LIBVEC    LibExpunge
  83.         LIBVEC    LibExtFunc
  84.         LIBVEC    LibClock
  85.         dc.w    -1
  86.  
  87. ;--------------------------------------------------------------------------
  88.  
  89. ResInfo        INITBYTE LN_TYPE,NT_LIBRARY
  90.         INITLONG LN_NAME,LibName
  91.         INITBYTE LIB_FLAGS,(LIBF_SUMUSED!LIBF_CHANGED)
  92.         INITWORD LIB_VERSION,UHRVER
  93.         INITWORD LIB_REVISION,UHRREV
  94.         INITLONG LIB_IDSTRING,IdString
  95.         dc.w 0
  96.  
  97. ***************************************************************************
  98.  
  99.         cnop    0,4
  100.  
  101. InitFunc    suba.l    a1,a1
  102.         cmp.w    #37,20(a6)        ; need at least 2.04!
  103.         bcs.s    1$
  104.         move.l    d0,a1
  105.         move.l    a0,cb_SegList(a1)    ; save seglist
  106.         move.l    a6,cb_SysBase(a1)    ; cache SysBase (speed!)
  107. 1$        move.l    a1,d0
  108.         rts
  109.  
  110. ;--------------------------------------------------------------------------
  111.  
  112. LibOpen        addq.w    #1,32(a6)        ; one more user
  113.         and.b    #$f7,14(a6)
  114.         move.l    a6,d0
  115.         rts
  116. ;--------------------------------------------------------------------------
  117.  
  118. LibClose    subq.w    #1,32(a6)        ; one less user
  119.         bne.s    LibExtFunc
  120.         btst    #3,14(a6)
  121.         bne.s    LibExpunge        ; expunge!
  122.  
  123. ;--------------------------------------------------------------------------
  124.  
  125. LibExtFunc    moveq    #0,d0            ; reserved library entry
  126.         rts
  127.  
  128. ;--------------------------------------------------------------------------
  129.  
  130. LibExpunge    movem.l    a2/a5/a6,-(sp)
  131.         move.l    a6,a5
  132.         suba.l    a2,a2
  133.         or.b    #8,14(a5)        ; set LIBF_DELEXP
  134.         tst.w    32(a5)
  135.         bne.s    1$            ; still in use...
  136.         move.l    cb_SysBase(a5),a6
  137.         move.l    cb_SegList(a5),a2    ; get seglist
  138.         move.l    a5,a1
  139.         RECALL    Remove
  140.         move.l    a5,a1
  141.         moveq    #0,d0
  142.         move.w    16(a5),d0
  143.         suba.l    d0,a1
  144.         add.w    18(a5),d0
  145.         RECALL    FreeMem
  146. 1$        move.l    a2,d0            ; return SegList (or NULL)
  147.         movem.l    (sp)+,a2/a5/a6
  148.         rts
  149.  
  150. ;--------------------------------------------------------------------------
  151.  
  152. LibClock    move.l    a4,-(sp)
  153.         jsr    _TolleUhr
  154.         move.l    (sp)+,a4
  155.         rts
  156.  
  157.         end
  158.